Skip to content

[pull] main from microsoft:main#1244

Merged
pull[bot] merged 20 commits into
code:mainfrom
microsoft:main
May 12, 2026
Merged

[pull] main from microsoft:main#1244
pull[bot] merged 20 commits into
code:mainfrom
microsoft:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 12, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

thernstig and others added 20 commits May 8, 2026 16:20
The configuration "js/ts.tsdk.path" has an incorrect description, as it referenced the
deprecated "typescript.tsdk" description.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
It means localization will be kept intact.
When CAPI ends a stream with `response.incomplete` or `response.failed`, the parser previously returned undefined and the downstream chatMLFetcher saw zero completions and fell to `ChatFetchResponseType.Unknown` ("Sorry, no response was returned.").

Map terminal events into ChatCompletions with the right FinishedCompletionReason so the existing chatMLFetcher switch handles them:

- response.incomplete + content_filter -> ContentFilter (+ FilterReason from CAPI content_filters labels, e.g. TextCopyright -> Copyright)

- response.incomplete + max_output_tokens -> Length

- response.failed -> ServerError
fix: replace typescript.tsdk.desc with new js/ts.tsdk.path
* agent host: handle elicitation requests from copilot SDK

- Implements the new `onElicitationRequest` hook from the Copilot SDK so that the copilot agent can surface elicitations (free-form, schema, and URL) as session input requests, dispatching the agent's reply back through the SDK once the user responds.
- Renders URL-mode elicitations in the chat UI as a proper `ChatElicitationRequestPart` that opens the URL via `IOpenerService` and dispatches Accept/Decline/Cancel, instead of falling through to the question-carousel fallback which was not designed for URL approvals.
- Adds unit tests covering the new agent-side elicitation flow as well as the workbench-side URL elicitation rendering, opener integration, decline/cancel paths, and external-completion echoes.

Fixes <no issue>

(Commit message generated by Copilot)

* address review feedback for url elicitation handling

- settle() is idempotent without short-circuiting on cancellation
- map server-side SessionInputCompleted to ElicitationState before hide()
- check IOpenerService.open() return value; treat false as Decline
- tighten boolean/number text coercion in elicitationAnswerToFieldValue
- handle free-form (no schema) accept by returning { answer: text }
- add tests covering server-side dismissal (Cancel) and opener=false
…back

Address PR feedback and round out the content-filter mapping:

- Map response.error (string-coded per OpenAI SDK) onto APIErrorResponse so
  it propagates through ChatCompletion.error -> ChatFetchResult.streamError
  and BYOK callers see the underlying server-side reason. The numeric code
  field can't hold OpenAI's string enum, so the string is stashed in
  metadata.code (BYOK JSON.stringify's the whole struct).
- Add protected_material_text / protected_material_code to the structured
  content_filter_results fallback. These are the Azure REST spec's copyright
  detectors; today the wire emits the legacy CAPI 'content_filter_raw' shape
  with action=BLOCK + label=TextCopyright, but the spec'd path is what Azure
  is rolling toward.
- Document the wire-vs-spec distinction on CapiResponseTerminalEvent.
- Type the test's completions array as ChatCompletion[] (avoid any[]).
- Add a regression test asserting response.failed.error propagates.
Plumbs an optional 'resource' field through IAuthenticationService get/createSession options and the authIssuers proposal so MCP authentication can request audience-restricted tokens. mainThreadMcp now forwards authDetails.resourceMetadata.resource into both calls.

In the microsoft-authentication extension, the resource is threaded into MSAL's acquireTokenInteractive, acquireTokenByDeviceCode, and acquireTokenSilent. Bumps @azure/msal-node and @azure/msal-node-extensions to ^5.1.5; adapts to ServerAuthorizationCodeResponse -> AuthorizeResponse and fromNativeBroker -> fromPlatformBroker renames.

Adds tests verifying that getSessions/createSession forward 'resource' to the provider, and that each MSAL flow (default, protocol handler, device code) forwards 'resource' to the underlying MSAL call.
#315886)

Tool search is now always enabled for gpt-5.4/gpt-5.5, matching the
messages API path. Aligns the responses API on the same
endpoint.supportsToolSearch capability flag.

Also registers ToolSearchTool for gpt-5.4/gpt-5.5 and the
claude-opus-4.7 variants so model-specific tool gating actually
matches the supported endpoints.
Responses API: translate terminal events into typed completions
… connect (#315897)

- The tunnel picker flow called `connect()` (which fired `onDidChangeConnections`)
  before `cacheTunnel()` (which fired `onDidChangeTunnels` and created the
  provider). The wire-up handler therefore ran with no provider, so the new
  connection was never bound and `listSessions` was never issued — tunnel
  sessions only appeared after the user started a new session on the tunnel.
- Move `cacheTunnel()` inside `connect()` (desktop + web) so the cache → provider
  creation → `addManagedConnection` → wire-up ordering is invariant regardless
  of caller, removing the need for defensive re-wiring in the contribution.
- Drop the now-redundant explicit `cacheTunnel` call from the picker action and
  the trailing `_onDidChangeTunnels.fire()` from both service impls (cacheTunnel
  already fires it).
- Add a regression test that asserts a freshly-cached tunnel binds to a
  subsequent live connection through the standard wire-up path.

Fixes #315059

(Commit message generated by Copilot)
* Improve "Export agent host logs" action

* fix
* chat: show agent host model pricing in turn details

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: show agent host response credits

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: include agent host live usage details

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: handle late agent host usage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: read agent host usage cost

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: persist agent host usage details

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: remove agent host usage persistence

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agentHost: test usage metadata

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Clicking a remote host row in the Remote tab of the session workspace
picker no longer opened the per-remote options popup (Reconnect /
Remove / Copy connection string / Open settings / Show output).

The remote rows are built with an inline `run` callback that invokes
`_showRemoteHostOptionsDelayed`. A recent refactor extracted dispatch
into a shared `_dispatchPickerItem` so the mobile sheet could reuse
it, but the desktop `_buildDelegate.onSelect` was rewritten inline
and dropped the `item.run` branch. Clicks fell through to
`commandService.executeCommand` with a synthetic id that isn't a
registered command, so nothing happened.

Wire the desktop `onSelect` to `_dispatchPickerItem` so both
presentations share the single source of truth.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators May 12, 2026
@pull pull Bot added the ⤵️ pull label May 12, 2026
@pull pull Bot merged commit 63a4d48 into code:main May 12, 2026
9 of 22 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants